package com.copd.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 处理日期时间操作的工具类
 */
public class TimeUtil {
    
    private static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
    private static final String DEFAULT_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    
    /**
     * 将字符串转换为日期，如果转换失败则返回null
     * 支持的格式:
     * - yyyy-MM-dd
     * - yyyy/MM/dd
     * - yyyy-MM-dd HH:mm:ss
     * - yyyy/MM/dd HH:mm:ss
     *
     * @param dateStr 日期字符串
     * @return 日期对象，转换失败则返回null
     */
    public static Date parseDate(String dateStr) {
        if (dateStr == null || dateStr.trim().isEmpty()) {
            return null;
        }
        
        // 尝试使用不同的格式解析
        String[] formats = {
            "yyyy-MM-dd",
            "yyyy/MM/dd",
            "yyyy-MM-dd HH:mm:ss",
            "yyyy/MM/dd HH:mm:ss"
        };
        
        for (String format : formats) {
            try {
                SimpleDateFormat sdf = new SimpleDateFormat(format);
                sdf.setLenient(false); // 严格模式
                return sdf.parse(dateStr);
            } catch (ParseException e) {
                // 尝试下一个格式
                continue;
            }
        }
        
        // 所有格式都解析失败
        return null;
    }
    
    /**
     * 将日期格式化为字符串
     *
     * @param date 日期对象
     * @return 格式化后的字符串，null则返回空字符串
     */
    public static String formatDate(Date date) {
        return formatDate(date, DEFAULT_DATE_FORMAT);
    }
    
    /**
     * 将日期格式化为指定格式的字符串
     *
     * @param date 日期对象
     * @param format 日期格式
     * @return 格式化后的字符串，null则返回空字符串
     */
    public static String formatDate(Date date, String format) {
        if (date == null) {
            return "";
        }
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            return sdf.format(date);
        } catch (Exception e) {
            return "";
        }
    }
} 